package com.xiaoming.project.core;

import javax.security.auth.login.AccountLockedException;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;

/**
 * @ClassName: Main
 * @description: 大纲，仅用作描述，及全局调用
 * 本项目预计实现各数据结构及算法
 * 用作算法训练使用。
 * 集合框架练习 散列 数组 链表 映射表 树 图
 * 多线程练习 单个线程 两个线程 线程组
 * 文档存储练习 文档读取 文档写入 文档网络传输
 * 数据加密
 * @author: HuangZhiMing
 * @create: 2021-03-29 15:56
 **/
public class Main {

    public static volatile Integer i = 0;

    public static void main(String[] args) {
        List<Thread> list = new ArrayList<>();
        Lock lock = new ReentrantLock();
        for (int j = 0; j < 2; j++) {
            Thread thread = new Thread(() -> {
                lock.lock();
                for (int k = 0; k < 5000; k++) {
                    i++;
                }
                lock.unlock();
            }, "" + j);
            list.add(thread);
        }
        list.stream().forEach(t -> t.start());
        list.stream().forEach(t -> {
            System.out.println(i);
            try {
                t.join();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        });
        System.out.println(i);
    }

}
